package org.ala.tcp_feign_common.msg.login;

import java.nio.charset.Charset;

import org.ala.tcp_feign_common.msg.IByteMessageDecoder;

import io.netty.buffer.ByteBuf;


/**
 * [0x01 | 消息总长(4字节) | 用户名长度(4字节) | 密码长度(4字节) | 用户名 | 密码]
 * 
 * @author 骆毅(ala)
 * @date 2024年4月19日
 */
public class LoginByteMessageDecoder implements IByteMessageDecoder<LoginByteMessage> {

	@Override
	public LoginByteMessage decoding(ByteBuf byteBuf, int len) {
		LoginByteMessage msg = new LoginByteMessage();
		
		//	消息类型，之前已经读过了（1子节）
		//	消息总长，之前已经度过了（4子节）
		
		//	用户名长度（4子节）
		int usernameLen = byteBuf.readInt();
		//	密码长度（4子节）
		int passwordLen = byteBuf.readInt();
		
		//	用户名
		byte[] usernameBytes = new byte[usernameLen];
		byteBuf.readBytes(usernameBytes);
		String username = new String(usernameBytes, Charset.forName("utf-8"));
		msg.setUserName(username);
		
		//	密码
		byte[] passwordBytes = new byte[passwordLen];
		byteBuf.readBytes(passwordBytes);
		String password = new String(passwordBytes, Charset.forName("utf-8"));
		msg.setPassword(password);
		
		return msg;
	}

}
